Drag-and-drop has become a popular mental model for moving items, such as moving documents from one location to another, in the user interface of a software application, such as that presented in a webpage inside a Web browser. As Web browsers and other Web technologies change and evolve, however, implementing a drag-and-drop experience that is cross-browser compatible may become difficult and involve multiple implementations to achieve a unified experience across browsers. In addition, while the HTML 5 standard provides drag-and-drop capabilities, the standard has been implemented differently in different browsers and browser versions, especially in the areas of event types, behaviors, and properties.
Developers may implement a separate drag-and-drop solution for each browser (and version) for which they desire drag-and-drop support, or they may utilize a number of drag-and-drop libraries that offer limited support for the drag-and-drop capabilities available on the target browser platforms. Existing drag-and-drop libraries lack the ability of defining links of drag sources and drop targets and allow multiple groups of drag sources and drop targets. In addition, the transfer of data between drag sources and drop targets is limited by the W3C standards and each browser's implementation such that developers have no way of specifying custom data to be transferred between the drag source and drop target.
It is with respect to these considerations and others that the disclosure made herein is presented.